package cn.bonoon.kernel.web.annotations.form;

import static java.lang.annotation.ElementType.FIELD;
import static java.lang.annotation.RetentionPolicy.RUNTIME;

import java.lang.annotation.Retention;
import java.lang.annotation.Target;

import cn.bonoon.kernel.util.BoolType;

/**
 * <pre>
 * 对修改字段进行指定
 * 使用该注解的类的定义需要使用{@link FormEditor}或{@link FormUpdate}
 * 
 * 可以同时与{@link PropertyEditor}和{@link PropertyInsert}组合使用
 * 
 * 如果需要在明细项上进行解释说明，则可以使用注解{@link PropertyHelper}
 * 
 * 在被注解的字段上可以使用指定界面的控件，详细请查看{@link cn.bonoon.kernel.web.components.Component Component}的说明
 * </pre>
 * @author jackson
 *
 */
@Target(FIELD)
@Retention(RUNTIME)
public @interface PropertyUpdate {
	/**
	 * 用于界面显示的名字
	 * 
	 * @return 名字
	 */
	String name() default "";

	/**
	 * <pre>
	 * 单位。如：元、个、天等单位。
	 * 会自动添加到数据项后面
	 * </pre>
	 * 
	 * @return 单位
	 */
	String unit() default "";

	/**
	 * ordinal
	 * @return 排序的值
	 */
	int value() default 10;

	int height() default 0;
	
	int width() default 0;

	/**
	 * <pre>
	 * 0表示没有夸列,即对应html代码里的colspan="1"的情况.
	 * 大于小的表示有夸列,1表示夸1列,对应html代码为colspan="3"
	 * 
	 * <font color='red'>注意:夸一列是两个table的格,是一对&lt;th&gt;&lt;/th&gt;&lt;td&gt;&lt;/td&gt;</font>
	 * </pre>
	 * 
	 * @return 夸列
	 */
	int colspan() default 0;
	int rowspan() default 0;

	BoolType readonly() default BoolType.UNDEFINED;

	BoolType required() default BoolType.UNDEFINED;

	String validType() default "";

	String missingMessage() default "";

	String invalidMessage() default "";
}
